package questions

// FillBlankQuestion 填空题实现
type FillBlankQuestion struct {
	BaseQuestion `json:",inline"`   // 嵌入基础题目结构
	Settings     *TextInputSettings `json:"settings"` // 具体设置
}

// TextInputSettings 填空题设置
type TextInputSettings struct {
	Blanks          []*BlankField    `json:"blanks"`          // 填空字段列表
	ContentTemplate string           `json:"contentTemplate"` // 内容模板，使用 {{n}} 表示第n个空
	CaseSensitive   bool             `json:"caseSensitive"`   // 是否区分大小写
	DisplayType     string           `json:"displayType"`     // 显示类型：inline, separated
	PartialScoring  bool             `json:"partialScoring"`  // 是否支持部分得分
	ScoreStrategy   string           `json:"scoreStrategy"`   // 得分策略："all_or_nothing", "proportional"
	Answer          *TextInputAnswer `json:"answer"`          // 填空题答案
}

// BlankField 填空字段
type BlankField struct {
	ID           string `json:"id"`                     // 填空ID
	Order        int    `json:"order"`                  // 排序号
	InputType    string `json:"inputType"`              // 输入类型：text, number, etc
	Placeholder  string `json:"placeholder,omitempty"`  // 提示文本
	MinLength    *int   `json:"minLength,omitempty"`    // 最小长度
	MaxLength    *int   `json:"maxLength,omitempty"`    // 最大长度
	DefaultValue string `json:"defaultValue,omitempty"` // 默认值
	Width        int    `json:"width,omitempty"`        // 输入框宽度
}

// TextInputAnswer 填空题答案
type TextInputAnswer struct {
	BlankAnswers []*BlankAnswer `json:"blankAnswers"` // 每个空的回答
}

// BlankAnswer 单个空的答案
type BlankAnswer struct {
	BlankID string `json:"blankId"` // 填空ID
	Text    string `json:"text"`    // 文本回答
}

// GetType 获取题目类型
func (t TextInputSettings) GetType() QuestionType {
	return FillBlank
}

// GetSettings 方法实现Question接口
func (tq FillBlankQuestion) GetSettings() *TextInputSettings {
	return tq.Settings
}
